package com.xbongbong.paas.pojo.dto;

import com.xbongbong.paas.enums.DelEnum;
import com.xbongbong.paas.toolbox.wrap.BaseDTO;
import com.xbongbong.paas.toolbox.wrap.QueryIgnore;
import com.xbongbong.pro.enums.SaasMarkEnum;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;

/**
 * 新建应用DTO
 * @author kaka
 * @time 2018-7-30 16:01
 */
@Setter
@Getter
@ToString
public class ApplicationAddDTO extends BaseDTO {

    private static final long serialVersionUID = 321148966217874448L;

    /**
     * 应用名
     */
    @NotBlank(message = "{dto.msg.applicationAdd.name.NotBlank}")
    @Length(max = 20, message = "{dto.msg.applicationAdd.name.Length}")
    @Getter(onMethod_ = {@QueryIgnore})
    private String name;

    /**
     * 应用名英文版
     */
    @NotBlank(message = "{dto.msg.applicationAdd.name.NotBlank}")
    @Length(max = 50, message = "{dto.msg.applicationAdd.nameEn.Length}")
    @Getter(onMethod_ = {@QueryIgnore})
    private String nameEn;

    /**
     * 应用图标
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private String icon;

    /**
     * 应用颜色，十六进制RGB
     * 如 #FFB6C1
     */
    @Length(min = 7, max = 7, message = "{dto.msg.applicationAdd.color.Length}")
    @Getter(onMethod_ = {@QueryIgnore})
    private String color;

    /**
     * 排序值
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer sort;

    /**
     * 应用类型，1为saas应用，2为自建应用
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer saasMark;

    /**
     * 业务类型
     * @see com.xbongbong.saas.enums.XbbRefTypeEnum
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private String alias;

    @Getter(onMethod_ = {@QueryIgnore})
    private Integer enable;

    private Integer del;
    /**
     * 是否显示，1显示，0：隐藏
     * 此字段主要用于产品管理和资金管理中；
     * 产品管理需要crm开启才显示，并且可以作为应用参与排序
     * 资金管理中的回款管理和发票管理crm开启才显示，库存管理则随进销存的显示而显示；并且资金管理也可以作为应用参与排序
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer display;

    public ApplicationAddDTO() {
        super();
        //默认前端传过来的应用为自建应用
        saasMark = SaasMarkEnum.PAAS.getCode();
        name = "未命名应用";
        icon = "icon-menu-stock";
        color = "#F59C44";
        del = DelEnum.NORMAL.getDel();
        alias = "";
        display = 1;
        enable = 1;
    }
}
